import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

//1：输入一个整数，判断其是否是另一个数的平方，比如64是8的平方，7不是任何数的平方
//
//2：
//将一个正整数分解质因数。例如：输入90,打印出90=2*3*3*5。
// 17=17
//
//
//
//
//4：
//*(选做)一个整数，它加上100后是一个完全平方数，再加上168又是一个完全平方数，请问该数是多少？ （-99，Math.sqrt()）
//
//
//
//5：输出比10000大的10个质数
//
//6：输出斐波拉切数列的前N项，N由用户输入。
//斐波拉切数列的定义是前两个是1，后面的每一个是前面的两个和
//，比如N是5,则输出结果是1,1,2,3,5
//
//7:输入一个整数，判断其是否是回文数，回文数是指这个数颠倒后，和原数相同那个。
//
//8：输出1-10000以内所有的质数并统计个数
//
//9*：
//  现在纸币面额有 1元，2元，5元，10元，20元，50元和100元，输入一个正整数的金额，输出所有的组成可能，比如输入 3元，则有  3个1元 和  一个2+1个1元两种可能;并统计组成的数量；
//
//*10：计算公式1+1/2^2+1/3^2+1/4^2..+1/n^2的和
// 其中n^2表示n的平方。算到最后一项的值小于百万分之一即可。。。
public class homework34 {
    public static void isSquare() {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int sqrt = (int) Math.sqrt(num);
        if (sqrt * sqrt == num) {
            System.out.println(num + " 是平方数");
        } else {
            System.out.println(num + " 不是平方数");
        }
    }
    public static void factorization() {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int i = 2;
        List<Integer> factors = new ArrayList<>();
        while (i <= num) {
            if (num % i == 0) {
                factors.add(i);
                num /= i;
            } else {
                i++;
            }
            System.out.print(num+"=");
            for (Integer factor : factors) {
                System.out.print(factor + "+");
            }
            System.out.println();
        }
    }
    public static void isPerfectSquare() {
        for(int i=1;i<=10000000;i++){
            int x=i+100;
            int y=i+168;
            if(Math.sqrt(x)*Math.sqrt(x)==x&&Math.sqrt(y)*Math.sqrt(y)==y){
                System.out.println(i);
                break;
            }
        }
    }
    public static void print10Primesbig10000() {
        int count = 0;
        for(int i=10000;i<=100000000;i++){
            if(isPrime(i)){
                System.out.println(i);
                count++;
            }
            if(count==10){
                break;
            }
        }

    }


    public static void fibonacci() {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int a = 1, b = 1, c;
        System.out.print(a + " " + b);
        for (int i = 3; i <= num; i++) {
            c = a + b;
            System.out.print(" " + c);
            a = b;
            b = c;
        }
    }

    public static void isPalindrome() {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int reverse = 0;
        int temp = num;
        while (temp!= 0) {
            reverse = reverse * 10 + temp % 10;
            temp /= 10;
        }
        if (reverse == num) {
            System.out.println(num + " 是回文数");
        } else {
            System.out.println(num + " 不是回文数");
        }
    }

    public static void CountPrime() {
        int count = 0;
        for (int i = 2; i < 10000000; i++) {
            if (isPrime(i)) {
                System.out.print(i + " ");
                count++;
            }
        }
        System.out.println("\n"+count);
    }
    public static void CountMoney() {
        Scanner sc = new Scanner(System.in);
        int money = sc.nextInt();
        int[] coins = {1, 2, 5, 10, 20, 50, 100};
        int[] count = new int[7];
        for (int i = 0; i < coins.length; i++) {
            int countNum = money / coins[i];
            count[i] = countNum;
            money -= countNum * coins[i];
        }
        System.out.println("组成方式:");
        for (int i = 0; i < coins.length; i++) {
            if (count[i] > 0) {
                System.out.println(count[i] + "个" + coins[i] + "元");
            }
        }
        System.out.println("总共组成" + money + "元");
    }
    public static void Sum() {
        double sum = 0;
        for (int i = 1; i <= 1000000; i++) {
            sum += 1.0 / Math.pow(i, 2);
            if (1.0 / Math.pow(i, 2) < 0.0001) {
                System.out.println(i);
                break;
            }
        }
    }

    public static void main(String[] args) {
        System.out.println("1.判断一个整数是否是另一个数的平方:");
        isSquare();
        System.out.println("2.将一个正整数分解质因数:");
        factorization();
        System.out.println("3.判断一个整数是否是完全平方数:");
        isPerfectSquare();
        System.out.println("4.输出10000以内的10个质数:");
        print10Primesbig10000();
        System.out.println("5.输出斐波拉切数列的前N项:");
        fibonacci();
        System.out.println("6.判断一个整数是否是回文数:");
        isPalindrome();
        System.out.println("7.输出1-10000以内所有的质数:");
        CountPrime();
        System.out.println("8.计算1元、2元、5元、10元、20元、50元、100元的组合:");
        CountMoney();
        System.out.println("9.计算公式1+1/2^2+1/3^2+1/4^2..+1/n^2的和:");
        Sum();
    }
    public static boolean isPrime(int num) {
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }

}
